package gestionBDD;

import java.sql.* ;

import interne.Album ;

public class requetesAlbum {
	
	/*
	 * Ajoute une entrée dans la table Album
	 * Entrée : Objet Album avec tous les attributs sauf id_album
	 */
	public static void ajouterAlbum(Album a) throws SQLException {
		try {
			String sql = "INSERT INTO ALBUM (titre_album, sous_titre, partage, id_client) VALUES(?,?,?,?)";
			PreparedStatement statement = accesBDD.getInstance().prepareStatement(sql);
			statement.setObject(1, a.getTitreAlbum());
			statement.setObject(2,a.getSousTitre());
			statement.setObject(3,a.getPartage());
			statement.setObject(4, a.getIdClient());
			statement.executeUpdate();
			statement.close();
			accesBDD.getInstance().commit();
		}
		catch(SQLException e) {
			System.out.println(e) ;
		}
	}
	
	/*
	 * Supprime une entrée dans la table Album
	 * Entrée : Objet Album avec id_album
	 */
	public static void supprimerAlbum(Album a) throws SQLException {
		try {
			String sql = "DELETE FROM ALBUM where id_album = ?" ;
			PreparedStatement statement = accesBDD.getInstance().prepareStatement(sql);
			statement.setObject(1, a.getIdAlbum());
			statement.executeUpdate();
			statement.close();
			accesBDD.getInstance().commit();
		}
		catch(SQLException e) {
			System.out.println(e) ;
		}
		System.out.println("COUCOU1");
	}
	
	/*
	 * Modifie une entrée dans la table Album
	 * Entrée : Objet Album avec id_album
	 */
	public static void modifierAlbum(Album a) throws SQLException {
		try {
			String sql = "UPDATE ALBUM SET titre_album = ?, sous_titre = ?, partage = ? WHERE id_album = ?" ;
			PreparedStatement statement = accesBDD.getInstance().prepareStatement(sql);
			statement.setObject(1, a.getTitreAlbum());
			statement.setObject(2, a.getSousTitre());
			statement.setObject(3, a.getPartage());
			statement.setObject(4, a.getIdAlbum());
			statement.executeUpdate();
			statement.close();
			accesBDD.getInstance().commit();
		}
		catch(SQLException e) {
			System.out.println(e) ;
		}
	}
	
	/*
	 * Retourne tous les attributs d'un album
	 * Entrée : Objet Album avec id_album
	 */
	public static Album trouverAvecIdAlbum(Album a) throws SQLException {
		try {
			String sql = "SELECT * FROM ALBUM WHERE id_album = ?" ;
			PreparedStatement statement = accesBDD.getInstance().prepareStatement(sql);
			statement.setObject(1, a.getIdAlbum());
            ResultSet rs = statement.executeQuery();
            rs.next();
            a.setIdClient(rs.getInt("ID_CLIENT"));
            a.setTitreAlbum(rs.getString("TITRE_ALBUM"));
            a.setSousTitre(rs.getString("SOUS_TITRE"));
            a.setPartage(rs.getBoolean("PARTAGE"));
            a.setCouverture(rs.getInt("COUVERTURE"));
            a.setPostface(rs.getString("POSTFACE"));
            a.setPreface(rs.getString("PREFACE"));
            
			statement.close();
		}
		catch(SQLException e) {
			System.out.println(e);
		}
		return a ;
	}
	
	/*
	 * Complète les attributs d'un album pour en faire un livre
	 * Entrée : Objet Album avec id_album
	 */
	public static void faireLivre(Album a) throws SQLException {
		try {
			String sql = "UPDATE ALBUM SET couverture = ?, preface = ?, postface = ? WHERE id_album = ?";
			PreparedStatement statement = accesBDD.getInstance().prepareStatement(sql);
			statement.setObject(1, a.getCouverture());
			statement.setObject(2, a.getPreface());
			statement.setObject(3, a.getPostface());
			statement.setObject(4, a.getIdAlbum());
			statement.executeUpdate();
			statement.close();
			accesBDD.getInstance().commit();
		}
		catch(SQLException e) {
			System.out.println("faireLivre() : " + e) ;
		}
	}
	
	/*
	 * Cherche le titre d'un album
	 * Entrée : Entier id_album
	 */
	public static String retourneTitreAlbum(Integer idAlbum) throws SQLException {
		try {
			String sql = "SELECT * FROM ALBUM WHERE id_album = ?" ;
			PreparedStatement statement = accesBDD.getInstance().prepareStatement(sql);
			statement.setObject(1, idAlbum);
	        ResultSet rs = statement.executeQuery();
	        rs.next();
	        return rs.getString("TITRE_ALBUM") ;
		}
		catch(SQLException e) {
			System.out.println(e);
			return null;
		}
	}
	
	/*
	 * Retourne le nombre de photos contenues dans un album
	 */
	public static Integer trouverNombrePhotos(Album a) throws SQLException {
		try {
			String sql = "SELECT COUNT(id_contient) FROM ALBUM, CONTIENT WHERE ALBUM.id_album = ? and ALBUM.id_album = CONTIENT.id_album" ;
			PreparedStatement statement = accesBDD.getInstance().prepareStatement(sql);
			statement.setObject(1, a.getIdAlbum());
	        ResultSet rs = statement.executeQuery();
	        rs.next();
	        return rs.getInt("COUNT(id_contient)") ;
		}
		catch(SQLException e) {
			System.out.println(e);
			return null;
		}
	}
}
